package demo02;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

/*
dom4j中的重要类和方法
     1.SaxReader类
       read() 读取/加载xml文档
     2.Document类:代表内存中整个xml文档
       getRootElement() 获取根节点
     3.Element类
       elements():获取指定名称的所有子标签,也可以不指定名称
       element():获取指定名称的第一个子标签,也可以不指定名称
       getName():获取当前元素的名称
       attributeValue():获取指定属性名的属性值
       elementText():获取指定名称子标签文本
       getText():获取当前标签文本
*/
public class Dom4JDemo {
    public static void main(String[] args) throws DocumentException {
        //1.利用SaxReader读取一个xml文件
        Document read = new SAXReader().read("day01-xml-json/src/Demo03.xml");

        //System.out.println(document);//org.dom4j.tree.DefaultDocument@214c265e [Document: name day07_XML/dtd/Demo03.xml]
        //2.利用Document对象获取根节点
        Element rootElement = read.getRootElement();
        System.out.println(rootElement.getName());
        System.out.println("------------------------");

        //3.获取根节点下的所有子节点
        List<Element> elements = rootElement.elements();
        //System.out.println(elements.size());

        //4.遍历所有子节点,接着进一步获取子节点中的内容
        for (Element childelement : elements) {
            System.out.println(childelement.getName()+" "+
                    childelement.attributeValue("pid")+" "+
                    childelement.attributeValue("color"));
            for (Element aelement : childelement.elements()) {
                System.out.println(aelement.getName()+" "+aelement.getText()+" "
                        +aelement.attributeValue("name"));
            }
            System.out.println();
        }

    }
}
